package dletc.List;

import java.util.ArrayList;
import java.util.List;

/**

  一、List集合
  
  1.1 特点： A 有序的集合
            B 有索引的，可以利用for循环遍历
            C 可以有重复数据
 1.2 ArrayList 与 LinkedLIst 的区别：
 *
 *     ArrayList 集合：
 *
 *                ArryList集合： 数据结构： 是一个数组  Object[]  obj
 *                                                            线程不安全，效率高
 *                                                            适合做查询操作
 *                LinkedList集合：数据结构: 是一个链表结构
 *                                                              线程安全，效率低
 *                                                               适合增、删、改的操作
 *
 *                Vector集合：     数据结构：是一个数组  Object[]  obj
 *                                                            线程安全，效率低
   
  1.3 List特有常用方法：
 		1） void add(int index, E element)  将指定的元素插入此列表中的指定位置
 		2） E get(int index)  返回此列表中指定位置的元素。
 		3） int indexOf(Object o)  返回此列表中指定元素的第一次出现的索引，如果此列表不包含元素，则返回-1。
 		4）	int lastIndexOf(Object o)   返回此列表中指定元素的最后一次出现的索引，如果此列表不包含元素，则返回-1。
 		5）	E remove(int index)  删除该列表中指定位置的元素
 		6）	E set(int index, E element)  用指定的元素（可选操作）替换此列表中指定位置的元素。
 		7）	List<E> subList(int fromIndex, int toIndex)  返回包含起始之间所有元素的列表。
 */
public class Demo01 {

	public static void main(String[] args) {
		
		List<String> list = new ArrayList<String>();
		
		list.add("one");
		list.add("two");
		list.add("three");
		list.add("four");
		
		System.out.println(list);
		
		/**
		 * 一、 E set(int index , E e):修改指定索引位置的元素
		 *  返回值为被修改之前的元素，可以作为替换操作
		 */
		
		String set = list.set(1, "AA");
		System.out.println("被修改的元素为：" + set);
		System.out.println("修改后的集合为：" + list);
		
		/**
		 * 二、 E get(int index): 获取指定索引位置的元素
		 */
		
		String str = list.get(3);
		System.out.println(str);
		
		/**
		 *  三、因为list集合有序，所以可以使用for循环遍历
		 */
		
		for(int i= 0; i < list.size(); i++){
			System.out.println(list.get(i));
		}

	}

}
